package cn.com.java8newly;

/**
 * @ wenbin
 * @ date 2019/1/29
 */
/*
* 使用@FunctionalInterface 注解
 如果你确定了某个interface是用于Lambda表达式，
 请一定要加上@FunctionalInterface，表明你的意图。
 不然将来说不定某个不知情的家伙比如你旁边的好基友，
 在这个interface上面加了另外一个抽像方法时，你的代码就悲剧了
* */
@FunctionalInterface
public interface Supplier<T> {
    T get();
}

class Car {
    //Supplier是jdk1.8的接口，这里和lamda一起使用了
    public static Car create(final Supplier<Car> supplier) {
        return supplier.get();
    }

    public static void collide(final Car car) {
        System.out.println("Collided " + car.toString());
    }

    public void follow(final Car another) {
        System.out.println("Following the " + another.toString());
    }

    public void repair() {
        System.out.println("Repaired " + this.toString());
    }

    
}